GLISP: A Lisp-Based Programming System with Data Abstraction
نویسنده
چکیده
GLISI’ is a high-level language that. is compiled into LISP It provides a versatile abst~art,-dnt.a-t.ypc facility with hierarchical inheritance of pl oprl ties and object,-centered programming GLISP programs are shorter and more readable than equivalent LISP programs The object code produced by GLISP is optimized, making it about as cfflcient as handwritten LISP An integrated programming environment is provided, including automatic incremental compilation, interpretive programming features, and an intelligent display-hased inspector/editor for data and data-type descriptions GLISP code is relatively portahlr; the compiler and the data inspcrtor are implemcntcd for most major dialects of LISI’ and arc availablr flee or at nominal cost GI,ISP (NOVAK 1982, 1983A, 1983B) is a high-level language, based on LISP and including LISP as a sublanguage, that is compiled into LISP (which can be further compiled t,o machine language by the LISP compiler). The GLISP system runs within an existing LISP system and provides a.11 intrgratcd programming environment, that includes automatic incremental compilation of GLISP programs, interactive execution and debugging, and display-based editing and inspecThis research was supported in part by NSF grant SED-7912803 in the Joint National Science Foundation National Institute of Education Program of Research on Cognitive Processes and the Struct,urr of Knowledge in Science and Mathematics, and in part by the Defense Advanced Resealrh Projects Agency rmdel contract MDA-903-80-c-007 Author’s present address: Computer Science Department, University of Texas at Austin, Austin, TX: 78712 tion of data. IJse of GLISP makes writing, debugging, and modifying programs significantly easier; at the same time, the code produced by the compiler is optimized so that, it,s execution efficiency is comparable to that of handwritten LISP This article describes features of GLISP and illustrates them with examples Most of the syntax of GI,ISI’ is similar to LISP syntax or PASCAL synt,ax, so explicit. treatment of GLISP syntax will be brief. GLISP programs are compiled rclativc to a knowleflgc hasc of ohjcct, descriptions, a form of abstract. data types (Liskov et al. 1977; Wulf, London, ,Q Shaw 1976). A primary goal of the USC of abstract data types in GLISP is to make programming easier The ifnplerrient.:tt,iolis of’ objects are described in a single place; the compiler uses t,hc object. descriptions to convert GLISP code written in terms of user objects into efficient 1,TSP code writt,en in terms of the implcment,ations of the oqjects in LISP This allows the implcmentations of ol?jects to hc changed without, changing the code; it also allows the same code t.o be cffect,ivc for ol?ject.s that arc implemented in diffcrcnt, ways and thereby allows the accumulation of programming knowledge in the form of generic programs Figure 1 illustrates the combination of information from these t,hree sources; the recursive use of abstract, data types and generic programs in the coinpilation process provides multiplicative power for describing programs Overall, GLISP progranl syntax is like t,hat, of I,lSI’ THE AI MAGAZINE Fall 1983 37 AI Magazine Volume 4 Number 3 (1983) (© AAAI)
منابع مشابه
Knowledge-Based Programming Using Abstract Data Types
1. Abstract Features of the GLISP programming system that support knowledge-based programming are described. These include compile-time expansion of object-centered programs, interpretation of messages and operations relative to data type, inheritance of properties and behavior from multiple superclasses, type inference and propagation, conditional compilation, symbolic optimization of compiled...
متن کاملGLISP: A High-Level Language for A.I. Programming
GLISP is a high-level LISP-based language which is compiled into LISP using a knowledge base of object descriptions. l.isp objects and objects in AI. rcprcscntation languages arc treated uniformly; this makcc program code independent of the data representation used, and permits changes of representation without changing code. GI,lSP’s object description language provides a powerful abstract dat...
متن کاملLiterate Engines in Lisp
An engine is a programming language abstraction that implements timed preemption. Engines form a useful mechanism where bounded computation is needed. We describe an implementation of engines in Common Lisp and illustrate its functionality. We conclude with a discussion on how engines are being used in an ongoing project about goal-driven explanation. This paper is also an exercise in writing a...
متن کاملGeneration Flexibility versus Performance
Defining domain specific abstractions for generator systems leads to a quandary between choosing abstractions that exhibit powerful programming amplification through the combinatorial opportunities provided by composition, and choosing abstractions that can be easily transformed into high performance code. Most generation systems opt for high levels of abstraction to achieve programming amplifi...
متن کاملCompiling functional pipe/stream abstractions into conventional programs: Software Pipelines
Representing a potentially infinite indexed collection of data is a handy abstraction in a number of programming situations. Computational scientists routinely try to finess this notion by allocating an array of some “large enough” size, and (in a perhaps delicate move) re-allocate if it is not large enough. Even if one is aware of some direct implementation of infinite stream/pipe programming ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- AI Magazine
دوره 4 شماره
صفحات -
تاریخ انتشار 1983